1. Field of the Invention
Embodiments of the present invention relate generally to cryptography and general-purpose computing on graphics processing units and more specifically to cryptographic computations on graphics processing units.
2. Description of the Related Art
Modern Graphics processing units (GPUs) use millions of transistors to perform calculations related to 3D computer graphics. GPUs were initially used to accelerate the memory-intensive work of texture mapping and rendering polygons, later adding units to accelerate geometric calculations such as translating vertices into different coordinate systems. Recent developments in GPUs include support for programmable shaders which can manipulate vertices and textures with many of the same operations supported by central processing units (CPUs), oversampling and interpolation techniques to reduce aliasing, and very high-precision color spaces. Because many of these computations involve matrix and vector operations, engineers and scientists have increasingly studied the use of GPUs for non-graphical calculations. The term general-purpose computing on graphics processing units (GPGPU) describes the recent development of using the GPU to offload certain computations from the CPU. Although modern GPUs allow some programmability in the form of 3D shaders (e.g., the C for graphics (CG) toolkit), this should not be confused with general software programmability.
Today's GPUs lack some fundamental computing constructs, such as integer data operands. The lack of integers and associated operations, such as bit-shifts and bitwise logical operations (e.g., AND, OR, XOR, NOT) makes GPUs ill suited for many mathematically complex tasks, such as cryptography. GPGPU computing presents additional challenges even for problems that map well to the GPU, because oftentimes GPU programming typically requires recasting the relevant computations into graphics terms. Thus, harnessing the power of a GPU for general-purpose computation often requires a concerted effort by experts in both computer graphics and in the particular scientific or engineering domain. For these reasons, it is not clear how to program particular computations for GPU processing or even how to select computations capable of efficient implementation on GPUs.
In addition, many personal computers (PCs) will soon include an operating system and/or hardware that provide Internet protocol (IP) security (IPsec) (described in RFCs 4301-4309), which is a standard for securing IP communications by encrypting IP packets at the network layer. IPsec may use multiple encryption methods to encapsulate payloads in the IP packets, such as Advanced Encryption Standard (AES) (described in FIPS PUB 197). The huge throughput required to perform cryptographic computations for AES will likely overwhelm most CPUs (e.g., bidirectional throughput of over 2 Gbits/s). These developments, along with the increased demand for computer security by businesses and individuals, will drive the need for offloading cryptographic computations from the CPU to the GPU to improve efficiency.
As the foregoing illustrates, what is needed in the art is a way to efficiently use a GPU to offload cryptographic computations from the CPU.